package top.blueShark.template.service;

import java.util.List;

import top.blueShark.template.entity.SysUser;
import top.blueShark.template.entity.dto.SysUserRequestDTO;

/**
 * 系统用户服务接口
 */
public interface SysUserService {
    /**
     * 注册用户
     *
     * @param user 用户信息
     * @return 注册成功的用户信息
     */
    SysUser register(SysUser user);

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    SysUser findByUsername(String username);

    /**
     * 根据手机号查询用户
     *
     * @param phone 手机号
     * @return 用户信息
     */
    SysUser findByPhone(String phone);

    List<SysUser> getAll(SysUserRequestDTO sysUserRequestDTO);
    SysUser getById(Long id);
    int update(SysUser user);
    void delete(Long id);
    void add(SysUser user);

    // 查询用户的角色ID列表
    List<String> getRoleIdsByUserId(Long userId);

    List<String> getRoleNamesByUserId(Long userId);

    // 新增：根据用户ID获取其关联的所有菜单的权限码 (auth_code)
    List<String> getAuthCodesByUserId(Long userId); // <-- 新增此方法


    // 给用户分配角色
    void assignRoles(Long userId, List<String> roleIds);

    /**
     * 获取总用户数
     *
     * @return 总用户数
     */
    long getTotalUserCount();
} 